package com.qq.文件_io_字符.io2.缓冲流.字符缓冲流;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.Writer;

/*

	缓冲字符输出流
	缓冲字符输出流：BufferedWriter​(Writer w)

	作用：自带了8KB缓冲池，提高字符输出流写取数据的性能，除此之外多了换行功能，因为读取的时候读不到换行符
	因为是在缓冲池创建换行符，直接调用newLine()方法。
	
	新增方法：
	public void newLine()	换行操作

     目标：缓冲字符输出流的使用，学会它多出来的一个功能：newLine();
 */
public class BufferedWriter_Test2 {
    public static void main(String[] args) throws Exception {
        // 1、创建一个字符输出流管道与目标文件接通
        Writer fw = new FileWriter("src/out4.txt"); // 覆盖管道，每次启动都会清空文件之前的数据
       //Writer fw = new FileWriter("src/out3.txt", true); //追加数据还是在原始管道
        BufferedWriter bw = new BufferedWriter(fw);
        

//      a.public void write(int c):写一个字符出去
        bw.write(98);
        bw.write('a');
        bw.write('徐'); // 不会出问题了
        bw.newLine(); // bw.write("\r\n");
        //因为readLine读不到换行符，要经常输出换行符，所以输出时提供了插入换行符的方法newLine()

//       b.public void write(String c)写一个字符串出去
        bw.write("abc我是中国人");
        bw.newLine(); // bw.write("\r\n"); // 换行


//       c.public void write(char[] buffer):写一个字符数组出去
        char[] chars = "abc我是中国人".toCharArray();
        bw.write(chars);
        bw.newLine(); // bw.write("\r\n"); // 换行


//       d.public void write(String c ,int pos ,int len):写字符串的一部分出去
        bw.write("abc我是中国人", 0, 5);
        bw.newLine(); // bw.write("\r\n"); // 换行

//       e.public void write(char[] buffer ,int pos ,int len):写字符数组的一部分出去
        bw.write(chars, 3, 5);
        bw.newLine(); // bw.write("\r\n"); // 换行


      
//       注：
        //关闭最外层的流，里面包装的流会被自动关闭
        bw.close(); 
        //即使想手动全部close，也必须先关最外层的流，否则报错
        fw.close();
    }
}
